// *实例拦截器  为保证封装的灵活性（因为拦截后传参可能不一样）
import type { AxiosRequestConfig, AxiosResponse } from "axios";
//基础拦截器
export interface RequestInterceptors {
  // 请求拦截
  requestInterceptors?: (config: AxiosRequestConfig) => AxiosRequestConfig;
  requestInterceptorsCatch?: (err: any) => any;
  // 响应拦截
  responseInterceptors?: <T = AxiosResponse>(config: T) => T;
  responseInterceptorsCatch?: (err: any) => any;
}

//自定义传入的参数 因为axios提供的AxiosRequestConfig不允许传入拦截器
export interface RequestConfig extends AxiosRequestConfig {
  interceptors?: RequestInterceptors;
}
//取消请求方法的接口定义
export interface CancelRequestSource {
  [index: string]: () => void;
}
